package com.zhuiyun.project.api.group.service;

import com.zhuiyun.project.api.group.entity.Group;
import com.zhuiyun.project.api.group.model.GroupModel;
import com.zhuiyun.project.common.response.CommonResult;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;

import java.util.List;

import java.util.Map;

/**
 * @ClassName GroupService
 * @Description TODO
 * @Author kdj
 * @Date 2023/7/24 10:00
 **/
public interface GroupService {
    /**
     * @param file
     * @param groupModel
     * @Author kdj
     * @Description 创建对象
     * @Date 2023/7/24 10:55
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult createGroup(MultipartFile file, GroupModel groupModel);

    /**
     * @param createUserId
     * @Author kdj
     * @Description 获取群聊根据创始人
     * @Date 2023/7/24 16:03
     * @Return com.zhuiyun.project.common.response.CommonResult
     */
    CommonResult getGroupByCreateUserId(int createUserId);

    /**
     * @param groupId
     * @Author kdj
     * @Description 根据群聊id获取群聊消息
     * @Date 2023/7/24 21:24
     * @Return com.zhuiyun.project.api.group.entity.Group
     */
    Group getGroupByGroupId(int groupId);

    /**
    * @Author kdj
    * @Description 根据群号搜索到群
    * @Date 2023/7/25 20:28
    * @Return com.zhuiyun.project.common.response.CommonResult
    * @param groupNum
    */
    Map queryGroupByNum(int groupNum, int userId, String type);

    /**
    * @Author kdj
    * @Description 根据群id搜索到群 获取群信息
    * @Date 2023/7/27 17:10
    * @Return java.lang.Object
    * @param groupId
    */
    GroupModel queryGroupByGroupId(int groupId);

    /**
    * @Author kdj
    * @Description 获取创始人id
    * @Date 2023/7/27 19:58
    * @Return int
    * @param groupId
    */
    int getCreateUserId(int groupId);

    /**
     * @Author 韩佳轩
     * @Description 群聊首页信息
     * @Date 2023/7/26 21:48
     * @Return
     * @param groupModel
     */
    List<GroupModel> queryAllGroup(GroupModel groupModel);

    /**
    * @Author kdj
    * @Description 
    * @Date 2023/7/29 20:53
    * @Return java.lang.Object
    * @param userId
     * @param groupId
    */
    boolean isIngroup(int userId, int groupId);


    /** 
     *查询群信息
     * @author 温
     * @date 2023/7/31 16:52
     * @parameter [groupId]
     * @return com.zhuiyun.project.api.group.model.GroupModel
     */
    GroupModel Group(int groupId,int userId);

    /**
     * @Author 韩佳轩
     * @Description 修改头像和群名称
     * @Date 2023/7/27 19:26
     * @Return
     * @param group
     */
    int updateGroupAll(MultipartFile imageFile, Group group);
}
